/**
 * trace类记录文件的历史状态，用于文件的撤销，前进功能
 * */
function copy_state(file) {

}
export default class Trace{
    /**
     *
     * @param name 用于记录File的文件名
     * @param size File状态的最大数量
     * @param current 当前所处的状态索引
     * @param waittime 每次检测时间间隔
     */
    constructor(manager,name, size = 8,current = 0, waittime = 5000){
        this.name = name
        let file = copy_state(manager.get(name))
        this.traces = [file]
        this.size = size
        this.current = current
        this.waittime = waittime
        this.last_change = new Date().getTime()

    }

    /**
     * 是否到了记录踪迹的时间
     * @returns {boolean}
     */
    isTimeout() {
        let cur = new Date().getTime()
        if(cur - this.last_change > this.waittime) {
            return true
        }else {
            return false
        }
    }
    trace(file) {
        //检测当前指针是否在轨迹的中间，如果是，则移除指针之前的所有状态
        if(this.current > 0) {
            for(let i = 0;i < this.current;i++) {
                this.traces.shift()
            }
        }
        this.traces.unshift(copy_state(file))
        if(this.traces.length > this.size) {
            this.traces.pop()
        }
        return this.traces[this.current]
    }
    back(){
        if(this.current < this.size) {
            this.current++
        }
        return copy_state(this.traces[this.current])
    }
    forward() {
        if(this.current > 0) {
            this.current--
        }
        return copy_state(this.traces[this.current])
    }

}